package br.com.translog.modelo;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.xml.bind.annotation.XmlRootElement;

@Entity
@Table(name = "\"PessoaFisica\"", catalog = "\"Translog\"", schema = "\"EsqTranslog\"")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "PessoaFisica.findAll", query = "SELECT p FROM PessoaFisica p"),
    @NamedQuery(name = "PessoaFisica.findByCodigo", query = "SELECT p FROM PessoaFisica p WHERE p.codigo = :codigo"),
    @NamedQuery(name = "PessoaFisica.findByNome", query = "SELECT p FROM PessoaFisica p WHERE p.nome = :nome"),
    @NamedQuery(name = "PessoaFisica.findByRg", query = "SELECT p FROM PessoaFisica p WHERE p.rg = :rg"),
    @NamedQuery(name = "PessoaFisica.findByCpf", query = "SELECT p FROM PessoaFisica p WHERE p.cpf = :cpf"),
    @NamedQuery(name = "PessoaFisica.findBySexo", query = "SELECT p FROM PessoaFisica p WHERE p.sexo = :sexo"),
    @NamedQuery(name = "PessoaFisica.findByEstadoCivil", query = "SELECT p FROM PessoaFisica p WHERE p.estadoCivil = :estadoCivil"),
    @NamedQuery(name = "PessoaFisica.findByDataNascimento", query = "SELECT p FROM PessoaFisica p WHERE p.dataNascimento = :dataNascimento"),
    @NamedQuery(name = "PessoaFisica.findByTelefoneCelular", query = "SELECT p FROM PessoaFisica p WHERE p.telefoneCelular = :telefoneCelular"),
    @NamedQuery(name = "PessoaFisica.findByTelefoneResidencial", query = "SELECT p FROM PessoaFisica p WHERE p.telefoneResidencial = :telefoneResidencial")})
public class PessoaFisica implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "\"Codigo\"")
    private Integer codigo;
    @Basic(optional = false)
    @Column(name = "\"Nome\"")
    private String nome;
    @Basic(optional = false)
    @Column(name = "\"RG\"")
    private long rg;
    @Basic(optional = false)
    @Column(name = "\"CPF\"")
    private long cpf;
    @Basic(optional = false)
    @Column(name = "\"Sexo\"")
    private String sexo;
    @Basic(optional = false)
    @Column(name = "\"EstadoCivil\"")
    private String estadoCivil;
    @Basic(optional = false)
    @Column(name = "\"DataNascimento\"")
    @Temporal(TemporalType.DATE)
    private Date dataNascimento;
    @Basic(optional = false)
    @Column(name = "\"TelefoneCelular\"")
    private long telefoneCelular;
    @Basic(optional = false)
    @Column(name = "\"TelefoneResidencial\"")
    private long telefoneResidencial;
    @OneToOne(mappedBy = "codigoPessoaFisica")
    private Funcionario funcionario;

    public PessoaFisica() {
    }

    public PessoaFisica(Integer codigo) {
        this.codigo = codigo;
    }

    public PessoaFisica(Integer codigo, String nome, long rg, long cpf, String sexo, String estadoCivil, Date dataNascimento, long telefoneCelular, long telefoneResidencial) {
        this.codigo = codigo;
        this.nome = nome;
        this.rg = rg;
        this.cpf = cpf;
        this.sexo = sexo;
        this.estadoCivil = estadoCivil;
        this.dataNascimento = dataNascimento;
        this.telefoneCelular = telefoneCelular;
        this.telefoneResidencial = telefoneResidencial;
    }

    public Integer getCodigo() {
        return codigo;
    }

    public void setCodigo(Integer codigo) {
        this.codigo = codigo;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public long getRg() {
        return rg;
    }

    public void setRg(long rg) {
        this.rg = rg;
    }

    public long getCpf() {
        return cpf;
    }

    public void setCpf(long cpf) {
        this.cpf = cpf;
    }

    public String getSexo() {
        return sexo;
    }

    public void setSexo(String sexo) {
        this.sexo = sexo;
    }

    public String getEstadoCivil() {
        return estadoCivil;
    }

    public void setEstadoCivil(String estadoCivil) {
        this.estadoCivil = estadoCivil;
    }

    public Date getDataNascimento() {
        return dataNascimento;
    }

    public void setDataNascimento(Date dataNascimento) {
        this.dataNascimento = dataNascimento;
    }

    public long getTelefoneCelular() {
        return telefoneCelular;
    }

    public void setTelefoneCelular(long telefoneCelular) {
        this.telefoneCelular = telefoneCelular;
    }

    public long getTelefoneResidencial() {
        return telefoneResidencial;
    }

    public void setTelefoneResidencial(long telefoneResidencial) {
        this.telefoneResidencial = telefoneResidencial;
    }

    public Funcionario getFuncionario() {
        return funcionario;
    }

    public void setFuncionario(Funcionario funcionario) {
        this.funcionario = funcionario;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (codigo != null ? codigo.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof PessoaFisica)) {
            return false;
        }
        PessoaFisica other = (PessoaFisica) object;
        if ((this.codigo == null && other.codigo != null) || (this.codigo != null && !this.codigo.equals(other.codigo))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "br.com.translog.modelo.PessoaFisica[ codigo=" + codigo + " ]";
    }
}
